<?php
/**
* @version		1.0 : view.html.php marum56
* @package		Joomla
*/

// Check to ensure this file is included in Joomla!
defined('_JEXEC') or die( 'Restricted access' );

jimport( 'joomla.application.component.view');


/**
 * HTML View class for the Ojects component
 *
 * @static
 * @package	Joomla
 * @subpackage	Producenci
 * @since 1.0
 */
class ObiektyViewObiekt extends JView
{	
	function display($tpl = null)
	{       
		$gid = JRequest::getVar( 'gid' );

		$db =& JFactory::getDBO();
		
		// Tablica selekcji WHERE w SQL 
		$where = array();
		// Tablica dołączanych tabel SQL
		$inner = array();
		// Tablica dołączanych tabel SQL - LEWOSTRONNIE
		$left = array();
		
		/*
		 * Tabela z obiektami
		 */
		$from = ' FROM #__obiekty AS a';
		// Wyszukaj najmłodszych rekordów dla danego nr obiektu
		$where[] = 'a.registerDate = (SELECT max(registerDate) 
		                              FROM #__obiekty
		                              WHERE gid = a.gid)';                             

		/*
		 * Tabela z kierownikami
		 */
		$inner[] = ' INNER JOIN #__obiekty_k AS k ON k.gid = a.gid';
		// Wyszukaj najmłodszych rekordów dla danego nr obiektu
		$where[] = 'k.registerDate = (SELECT max(registerDate) 
		                              FROM #__obiekty_k
		                              WHERE gid = k.gid)';
		// Połączenie po kluczu obcym                        
		// Tabela jos_users z najmłodszymi rekordami
		$users = 'SELECT x.pesel, x.name 
		          FROM jos_users AS x
		          WHERE (x.registerDate = (SELECT max(registerDate) 
                    	 	                    FROM jos_users 
                     		                    WHERE pesel = x.pesel))
                           AND x.del =0'
                ;	   
                // Połączenie lewostronne aby otrzymać rekord z pustym połączeniem (brak kierownika)
		$left[] = ' LEFT JOIN ('.$users.') AS kk ON kk.pesel = k.users';	                              		                           
		                            
	
		/*
		 * Tabele z regionami
		 */
		$inner[] = ' INNER JOIN #__obiekty_r AS r ON r.gid = a.gid';
		// Wyszukaj najmłodszych rekordów dla danego nr obiektu
		$where[] = 'r.registerDate = (SELECT max(registerDate) 
		                              FROM #__obiekty_r
		                              WHERE gid = r.gid)';
		// Połączenie po kluczu obcym                        
		// Tabela jos_regiony z najmłodszymi rekordami
		$regiony = 'SELECT x.gid, x.n_reg 
		          FROM #__regiony AS x
		          WHERE (x.registerDate = (SELECT max(registerDate) 
                    	 	                    FROM #__regiony 
                     		                    WHERE gid = x.gid))
                           AND x.del =0'
                ;	   
                // Połączenie lewostronne aby otrzymać rekord z pustym połączeniem (brak kierownika)
		$left[] = ' LEFT JOIN ('.$regiony.') AS rr ON rr.gid = r.regiony';	                              		                           
                              
		
		/*
		* Tabele ze spółkami
		*/
		$inner[] = ' INNER JOIN #__obiekty_s AS s ON s.gid = a.gid';
		// Wyszukaj najmłodszych rekordów dla danego nr obiektu
		$where[] = 's.registerDate = (SELECT max(registerDate) 
		                              FROM #__obiekty_s
		                              WHERE gid = s.gid)';
		// Połączenie po kluczu obcym                        
		$inner[] = ' INNER JOIN #__spolka AS ss ON ss.id = s.spolka';                              
		                              

		if (isset( $search ) && $search != '') {
			$searchEscaped = $db->Quote( '%'.$db->getEscaped( $search, true ).'%', false );
			$where[] = 'a.obiekt LIKE '.$searchEscaped;
		}
		
		// Szukany rekord
		$where[] = 'a.gid = '.$gid;
		
		$where = ( count( $where ) ? ' WHERE (' . implode( ') AND (', $where ) . ')' : '' );
		$inner = ( count( $inner ) ? implode( ' ', $inner ) : '' );
		$left = ( count( $left ) ? implode( ' ', $left ) : '' );

		
		/*
		 * Tabela z obiektami. Gotowe zapytanie.
		 */	 
		$query = 'SELECT a.*, kk.name, rr.n_reg, ss.spolka'
			. $from
			. $inner
			. $left
			. $where
			. ' GROUP BY a.id'
			. $orderby
		;

		//Ile rekordow do wyswietlenia.
		$db->setQuery( $query );
		$row = $db->loadAssoc();    // Zwraca rekord w postaci tabeli asocjacyjnej

		// Nowy pusty obiekt 
		$ob =& new msObiekt();
		// Obiekt wypełniony polami z tabeli.
		$ob->bind($row);

		// Binduj obiekt producenta, gdy wracamy po nieudanej
		// probie zapisu danych.
		// W normalnej sytuacji, gdy wyswietlamy szczegoly to
		// obiekt wypelniamy polami z tabeli.
		$post = JRequest::get('post');
		if ($post) {
			$ob->bind($post);
		}
		
		
		//Lista selekt regionów		
		$lists['reg'] = msSelect::Region('regiony', $ob->n_reg, false, 'gid');
		//Lista selekt kierowników obiektów i regionów (kierownik regionu może być również kierownikiem obiektu)
		 $lists['kier'] = msSelect::UserGrup('users', $ob->name,'gid = 19 OR gid = 22', false, 'pesel');
		//Lista selekt spółek
		$lists['spolka'] =  msSelect::Spolka('spolka', $ob->spolka, false, 'id');
		

		$this->assignRef('lists', $lists);	
		$this->assignRef('ob', $ob);

		parent::display($tpl='pdf');
	}
}
